<?php 
//viabilidadForm.php

// Archivos.
require_once 'global.inc.php';
require_once '../classes/html_element.class.php';

function createOption($value, $innerHTML) {
	$opt = new html_element('option');
	$opt->set(array('value'=>$value, 'innerHTML'=>$innerHTML));
	return $opt;
};
?>

<?php 
// Encabezado.
include_once 'viabilidadForm.header.html';

// Obtengo el nombre de la tabla de ponderacion a utilizar.
if (isset($_GET["ponderacion"]))
	$ponderacion = $_GET["ponderacion"];

// Cuerpo de la pagina.
// Si no existe el viabilidadForm.fields.temp.html
	// Generar el archivo de campos del formulario a partir de select * from caracteristicas.
$fields = 'viabilidadForm.'.$ponderacion.'.body.auto.html';

// Para no tener que borrar a mano el temporal. Pero en deploy deberia comentarse esta linea.
if (file_exists($fields)) 
	unlink($fields);

if (! file_exists($fields) ) {
	//generar el archivo
	$fd = fopen($fields, 'w') or die('Cannot open file:  '.$fields); //implicitly creates file
#	fwrite($fd,"<!-- ARCHIVO GENERADO AUTOMATICAMENTE POR '".$fields."' NO EDITAR DIRECTAMENTE.-->");

	$opcionesBool = array(
		createOption('si','Sí'),
		createOption('no','No')
	);
	$opcionesDifuse = array(
		createOption('nada','Nada'),
		createOption('poco','Poco'),
		createOption('regular','Regular'),
		createOption('mucho','Mucho'),
		createOption('todo','Todo')
	);

	$body = new html_element('body');
	
	$header = new html_element('header');
	$header->set('style','height:2cm');
	$hx = new html_element('h1');
	$hx->set('innerHTML','Estudio de viabilidad');
	$header->inject($hx);
	$body->inject($header);
	$body->set('onLoad','onLoadForm(this)');

	$section = new html_element('section');
	$article = new html_element('article');

	$form = new html_element('form');
	$form->set('action','persistirEntidad.php');
	// TODO  onsubmit VALIDATEFORM.
	$form->set('method','POST');
	$form->set('name','viabilidad');
	$form->set('onSubmit','return submitCheck(this);');

#	$form->set('oninput',oninput="oNota.value = nota.valueAsNumber");

	$fieldset = new html_element('fieldset');
	$fieldset->set('name','cuestionario');
	$legend = new html_element('legend');
	$legend->set('innerHTML','Cuestionario');
	$fieldset->inject($legend);

	$dimNombres = array(
		'A' => 'Adequación',
		'E' => 'Éxito',
		'P' => 'Plausibilidad',
		'J' => 'Justificación'
	);

#	$list = new html_element('ul');

	$dimensiones = array (
		'A' => new html_element('fieldset'),
		'E' => new html_element('fieldset'),
		'P' => new html_element('fieldset'),
		'J' => new html_element('fieldset')
	);
	foreach ($dimensiones as $key => $value)
		$value->set('name',$dimNombres[$key]);

	$legends = array (
		'A' => new html_element('legend'),
		'E' => new html_element('legend'),
		'P' => new html_element('legend'),
		'J' => new html_element('legend')
	);
	foreach ($dimNombres as $dim => $nombre) {
		$legends[$dim]->set('innerHTML',$nombre);
		$dimensiones[$dim]->inject($legends[$dim]);
	}

	$listas = array(
		'A' => new html_element('ul'),
		'E' => new html_element('ul'),
		'P' => new html_element('ul'),
		'J' => new html_element('ul')
	);

	$caracteristicasJOINponderacion = $db->select('caracteristica NATURAL JOIN '.$ponderacion);

	$is_odd = true;
	foreach ($caracteristicasJOINponderacion as $value) {
		$c = new Caracteristica($value,null);
		$p = new Ponderacion($value,null);

		$li = new html_element('li');
		
		$label = new html_element('label');
		$label->set( 'innerHTML',utf8_encode("<span style='font-weight:bold;'>".$c->dimension.":</span> ".$c->descripcion) );
		
		$li->set('class', ($is_odd) ? 'odd':'even');
		$is_odd = !$is_odd;

		$input = '';

		switch ($c->naturaleza) {
			case 'bool':
				$input = new html_element('select');
				foreach ($opcionesBool as $opt)
					$input->inject($opt);
				break;
			case 'int':
				$input = new html_element('input');
				$input->set(array(
					'type'=>'number',
					'min'=>'0.0',
					'max'=>'10.0',
					'step'=>'0.1')
				);
				break;
			case 'difuse':
				$input = new html_element('select');
				foreach ($opcionesDifuse as $dif)
					$input->inject($dif);
				break;
			default:
				$input = new html_element('input');
				$input->set(array(
					'type'=>'text',
					'placeholder'=>$c->naturaleza,
					'peso'=>'1')
				);
				break;
		} // end switch

		// Atributos especiales de input para los calculos del lado cliente con jscript.
		$input->set(array(
			'name'=>$c->dimension,
			'id'=>$c->dimension,
			'peso'=>$p->peso,
			'umbral'=>$p->umbral,
			'naturaleza'=>$c->naturaleza,
			'required'=>'true')
		);

		$input->set('onChange','checkInput(this);');

		$label->inject($input);
		$li->inject($label);

		$dim = $c->dimension[0];
		$listas[$dim]->inject($li);
	}

	foreach ($dimNombres as $dim => $nombre) {
		$dimensiones[$dim]->inject($listas[$dim]);

		$summary = new html_element('summary');	
		$summary->set('innerHTML','Mostrar/Ocultar ('.$nombre.')');
		$details = new html_element('details');
		$details->inject($summary);
		$details->inject($dimensiones[$dim]);

		$form->inject($details);
	}

	$fieldset = new html_element('fieldset');
	$fieldset->set('name','resultado');
	$legend = new html_element('legend');
	$legend->set('innerHTML','Resultado');
	$fieldset->inject($legend);

	$dimensiones = array('A'=>'Adequación', 'E'=>'Éxito', 'P'=>'Plausibilidad', 'J'=>'Justificación', 'T'=>'TOTAL');

	$activar = array('T','A','E','P','J');
	$is_odd = true;
	$list = new html_element('ul');
	$botones = array();
	foreach ($dimensiones as $dim => $nombre) {
		$button = new html_element('button');
		$button->set('type','button');
		$button->set('name','button'.$dim);

#		error_log('puntajeEstandardForm('."'".$dim."[0-9]+'".',"'.$dim.'")');
		if ($dim != 'T')
			$button->set('onclick','puntaje'.$dim.'.value = puntajeEstandardForm('."'".$dim."[0-9]+'".','."'".$dim."'".').toFixed(2);');
		else
			$button->set('onclick','puntaje'.$dim.'.value = puntajeEstandardFormTotal().toFixed(2);');

		$button->set('innerHTML','Calcular '.$nombre);

		if (!in_array($dim,$activar)) {
			$button->set('style','display:none');
		}

		$label = new html_element('label');

		$output = new html_element('output');
		$output->set('name','puntaje'.$dim);

		$output->set('innerHTML','...');
		$label->set('innerHTML',$nombre.': ');
		$label->inject($output);
		
		$li = new html_element('li');
		$li->set('class', ($is_odd) ? 'odd':'even');
		$li->set('id','li'.$dim);
		$is_odd = !$is_odd;

#		$li->inject($button);
		array_push($botones,$button);

		$li->inject($label);

		$svg = new html_element('svg');
		$svg->set('xmlns','http://www.w3.org/2000/svg');
		$svg->set('id','svg'.$dim);
		$svg->set('name','svg'.$dim);
		$svg->set('width','100');
		$svg->set('height','20');
		$li->inject($svg);

		$list->inject($li);
#		$fieldset->inject(new html_element('br'));

	}
	$fieldset->inject($list);
	foreach ($botones as $b)
		$fieldset->inject($b);
	
	$summary = new html_element('summary');	
	$summary->set('innerHTML','Mostrar/Ocultar (Resultado)');
	$details = new html_element('details');
	$details->inject($summary);
	$details->inject($fieldset);

	$submit = new html_element('input');
	$submit->set('type','submit');
	$details->inject($submit);

	$form->inject($details);


	$article->inject($form);
	$section->inject($article);
	$body->inject($section);


	$footer = new html_element('footer');
	$hx = new html_element('h3');
	$hx->set('innerHTML','75.67 - Sistemas automaticos de diagnostico y detección de fallas 1');
	$center = new html_element('center');

	$center->inject($hx);
	$footer->inject($center);
	
	$body->inject($footer);

	fwrite($fd,utf8_encode($body->build()));
	error_log("Creado el archivo '".$fields."'.");
#	fflush($fd);
	fclose($fd);
}

error_log("Agregando '".$fields."'.");
include_once $fields;

include_once 'viabilidadForm.footer.html';

?>

